package com.hyper_yang.javase.collections.list_collection.arraylist;

import java.util.ArrayList;
import java.util.Arrays;

public class TryArraylist {
    // ArrayList 底层原理 及 扩充机制
    /*
        public ArrayList(int initialCapacity) {
            if (initialCapacity > 0) {
                this.elementData = new Object[initialCapacity];
            } else if (initialCapacity == 0) { // 利用空参创建的集合，在底层创建一个默认长度为 0的数组
                this.elementData = EMPTY_ELEMENTDATA;
            } else {
                throw new IllegalArgumentException("Illegal Capacity: "+
                                                   initialCapacity);
            }
        }

       添加第一个元素时，创建一个新的长度为 10的数组: DEFAULT_CAPACITY = 10;
       存满 扩 0.5个 OLD_CAPACITY: oldCapacity >> 1      preferred growth
       如果一次添加多个元素，1.5倍放不下，则新创建数组长度以实际为准 elementData = new Object[Math.max(DEFAULT_CAPACITY, minCapacity)];
    */
    public static void main(String[] args) {
        ArrayList<String> arrayList1 = new ArrayList<>();
        arrayList1.add("a");
        arrayList1.add("b");
        arrayList1.add("c");
        arrayList1.add("d");
        System.out.println(arrayList1);

        ArrayList<String> arrayList2 = new ArrayList<>();
        arrayList2.addAll(arrayList1);
        System.out.println(arrayList2);

    }
}
